/*
 * (C) 2020-2025 see Authors.txt
 *
 * This file is part of MPC-BE.
 *
 * MPC-BE is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * MPC-BE is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#pragma once

////////////////////////////////////////////////////////////////////////////////////////
// CLSID of some filters

// sources and splitters

// {6B6D0800-9ADA-11d0-A520-00A0D10129C0}
DEFINE_GUID(CLSID_NetShowSource,
			0x6b6d0800, 0x9ada, 0x11d0, 0xa5, 0x20, 0x00, 0xa0, 0xd1, 0x01, 0x29, 0xc0);
// {564FD788-86C9-4444-971E-CC4A243DA150} Haali Splitter (AR)
DEFINE_GUID(CLSID_HaaliSplitterAR,
			0x564FD788, 0x86C9, 0x4444, 0x97, 0x1E, 0xCC, 0x4A, 0x24, 0x3D, 0xA1, 0x50);
// {55DA30FC-F16B-49FC-BAA5-AE59FC65F82D} Haali Splitter
DEFINE_GUID(CLSID_HaaliSplitter,
			0x55DA30FC, 0xF16B, 0x49FC, 0xBA, 0xA5, 0xAE, 0x59, 0xFC, 0x65, 0xF8, 0x2D);
// {171252A0-8820-4AFE-9DF8-5C92B2D66B04} LAV Splitter
DEFINE_GUID(CLSID_LAVSplitter,
			0x171252A0, 0x8820, 0x4AFE, 0x9D, 0xF8, 0x5C, 0x92, 0xB2, 0xD6, 0x6B, 0x04);
// {B98D13E7-55DB-4385-A33D-09FD1BA26338} LAV Source
DEFINE_GUID(CLSID_LAVSource,
			0xB98D13E7, 0x55DB, 0x4385, 0xA3, 0x3D, 0x09, 0xFD, 0x1B, 0xA2, 0x63, 0x38);
// {55C39876-FF76-4AB0-AAB0-0A46D535A26B} 3DYD Youtube Source
DEFINE_GUID(CLSID_3DYDYoutubeSource,
			0x55C39876, 0xFF76, 0x4AB0, 0xAA, 0xB0, 0x0A, 0x46, 0xD5, 0x35, 0xA2, 0x6B);

// {7D3BBD5A-880D-4A30-A2D1-7B8C2741AFEF} MPC Script Source
DEFINE_GUID(CLSID_MPCScriptSource,
			0x7D3BBD5A, 0x880D, 0x4A30, 0xA2, 0xD1, 0x7B, 0x8C, 0x27, 0x41, 0xAF, 0xEF);

// video decoders

// {212690FB-83E5-4526-8FD7-74478B7939CD} from wmcodecdsp.h
DEFINE_GUID(CLSID_CMPEG2VidDecoderDS,
			0x212690FB, 0x83E5, 0x4526, 0x8F, 0xD7, 0x74, 0x47, 0x8B, 0x79, 0x39, 0xCD);
// {71E4616A-DB5E-452B-8CA5-71D9CC7805E9} - Nvidia VideoDecoder
DEFINE_GUID(CLSID_NvidiaVideoDecoder,
			0x71E4616A, 0xDB5E, 0x452B, 0x8C, 0xA5, 0x71, 0xD9, 0xCC, 0x78, 0x05, 0xE9);
// {D7D50E8D-DD72-43C2-8587-A0C197D837D2} - Sonic Cinemaster VideoDecoder
DEFINE_GUID(CLSID_SonicCinemasterVideoDecoder,
			0xD7D50E8D, 0xDD72, 0x43C2, 0x85, 0x87, 0xA0, 0xC1, 0x97, 0xD8, 0x37, 0xD2);
// {EE30215D-164F-4A92-A4EB-9D4C13390F9F} - LAV Video Decoder
DEFINE_GUID(GUID_LAVVideoDecoder,
			0xEE30215D, 0x164F, 0x4A92, 0xA4, 0xEB, 0x9D, 0x4C, 0x13, 0x39, 0x0F, 0x9F);

// allocator presenters

// {7612b889-e070-4bcc-0b88-91cb794174ab}
DEFINE_GUID(CLSID_EVRAllocatorPresenter,
			0x7612b889, 0xe070, 0x4bcc, 0xb8, 0x08, 0x91, 0xcb, 0x79, 0x41, 0x74, 0xab);
// {F9F62627-E3EF-4a2e-B6C9-5D4C0DC3326B}
DEFINE_GUID(CLSID_SyncAllocatorPresenter,
			0xf9f62627, 0xe3ef, 0x4a2e, 0xb6, 0xc9, 0x5d, 0x4c, 0x0d, 0xc3, 0x32, 0x6b);
// {B72EBDD4-831D-440f-A656-B48F5486CD82}
DEFINE_GUID(CLSID_DXRAllocatorPresenter,
			0xb72ebdd4, 0x831d, 0x440f, 0xa6, 0x56, 0xb4, 0x8f, 0x54, 0x86, 0xcd, 0x82);
// {C7ED3100-9002-4595-9DCA-B30B30413429}
DEFINE_GUID(CLSID_madVRAllocatorPresenter,
			0xc7ed3100, 0x9002, 0x4595, 0x9d, 0xca, 0xb3, 0x0b, 0x30, 0x41, 0x34, 0x29);
// {28789E29-5BDD-4374-ADEC-AB2EB9212C0D}
DEFINE_GUID(CLSID_MPCVRAllocatorPresenter,
			0x28789E29, 0x5BDD, 0x4374, 0xAD, 0xEC, 0xAB, 0x2E, 0xB9, 0x21, 0x2C, 0x0D);

// video renderers

// {760A8F35-97E7-479d-AAF5-DA9EFF95D751} Haali's video renderer
DEFINE_GUID(CLSID_DXR,
			0x760a8f35, 0x97e7, 0x479d, 0xaa, 0xf5, 0xda, 0x9e, 0xff, 0x95, 0xd7, 0x51);

// {71F080AA-8661-4093-B15E-4F6903E77D0A} MPC Video Renderer
DEFINE_GUID(CLSID_MPCVR,
			0x71F080AA, 0x8661, 0x4093, 0xB1, 0x5E, 0x4F, 0x69, 0x03, 0xE7, 0x7D, 0x0A);

// audio renderers

// {601D2A2B-9CDE-40bd-8650-0485E3522727} MPC Audio Renderer(WASAPI)
DEFINE_GUID(CLSID_MpcAudioRenderer,
			0x601d2a2b, 0x9cde, 0x40bd, 0x86, 0x50, 0x04, 0x85, 0xe3, 0x52, 0x27, 0x27);

// {9DC15360-914C-46B8-B9DF-BFE67FD36C6A} ReClock
DEFINE_GUID(CLSID_ReClock,
			0x9dc15360, 0x914c, 0x46b8, 0xb9, 0xdf, 0xbf, 0xe6, 0x7f, 0xd3, 0x6c, 0x6a);

// {DF557071-C9FD-433A-9627-81E0D3640ED9}
DEFINE_GUID(CLSID_SanearAudioRenderer,
			0xdf557071, 0xc9fd, 0x433a, 0x96, 0x27, 0x81, 0xe0, 0xd3, 0x64, 0x0e, 0xd9);

// {0C38BDFD-8C17-4E00-A344-F89397D3E22A} Null Audio Renderer (Any)
DEFINE_GUID(CLSID_NullAudioRenderer,
			0x0C38BDFD, 0x8C17, 0x4E00, 0xA3, 0x44, 0xF8, 0x93, 0x97, 0xD3, 0xE2, 0x2A);

// {64A45125-7343-4772-9DA4-179FAC9D462C"} Null Audio Renderer (Uncompressed)
DEFINE_GUID(CLSID_NullUAudioRenderer,
			0x64A45125, 0x7343, 0x4772, 0x9D, 0xA4, 0x17, 0x9F, 0xAC, 0x9D, 0x46, 0x2C);


// subtitle renderers

// {93A22E7A-5091-45EF-BA61-6DA26156A5D0}  DirectVobSub/VSFilter
DEFINE_GUID(CLSID_VSFilter,
			0x93A22E7A, 0x5091, 0x45EF, 0xBA, 0x61, 0x6D, 0xA2, 0x61, 0x56, 0xA5, 0xD0);

// {9852A670-F845-491B-9BE6-EBD841B8A613} DirectVobSub/VSFilter (auto-loading version)
DEFINE_GUID(CLSID_VSFilter_autoloading,
			0x9852A670, 0xF845, 0x491B, 0x9B, 0xE6, 0xEB, 0xD8, 0x41, 0xB8, 0xA6, 0x13);

// {2DFCB782-EC20-4A7C-B530-4577ADB33F21}
DEFINE_GUID(CLSID_XySubFilter,
			0x2DFCB782, 0xEC20, 0x4A7C, 0xB5, 0x30, 0x45, 0x77, 0xAD, 0xB3, 0x3F, 0x21);
// {6B237877-902B-4C6C-92F6-E63169A5166C}
DEFINE_GUID(CLSID_XySubFilter_AutoLoader,
			0x6B237877, 0x902B, 0x4C6C, 0x92, 0xF6, 0xE6, 0x31, 0x69, 0xA5, 0x16, 0x6C);

// {8A3704F3-BE3B-4944-9FF3-EE8757FDBDA5}
DEFINE_GUID(CLSID_AssFilterMod,
			0x8A3704F3, 0xBE3B, 0x4944, 0x9F, 0xF3, 0xEE, 0x87, 0x57, 0xFD, 0xBD, 0xA5);
// {8A6DFC6A-0A79-4790-85DA-0688B8093B54}
DEFINE_GUID(CLSID_AssFilterModAutoLoad,
			0x8A6DFC6A, 0x0A79, 0x4790, 0x85, 0xDA, 0x06, 0x88, 0xB8, 0x09, 0x3B, 0x54);

// other filters

// {0B390488-D80F-4A68-8408-48DC199F0E97} ffdshow raw video filter
DEFINE_GUID(CLSID_ffdshowRawVideoFilter,
			0x0B390488, 0xD80F, 0x4A68, 0x84, 0x08, 0x48, 0xDC, 0x19, 0x9F, 0x0E, 0x97);
// {AB9D6472-752F-43F6-B29E-61207BDA8E06} - RDP Redirection Filter
DEFINE_GUID(CLSID_RDPDShowRedirectionFilter,
			0xAB9D6472, 0x752F, 0x43F6, 0xB2, 0x9E, 0x61, 0x20, 0x7B, 0xDA, 0x8E, 0x06);
